select 
CONCAT(CONCAT ('IT018E',SUBSTR(CONCAT('0000000',trim(forn.codice_allacciamento)),-7,7)),SUBSTR(forn.PROGRESSIVO_UTENZA,-1,1)) "POD",
contratti.codice_utente  "Codice Cliente",
contratti.codice_contratto,
persone.codice_persona "Codice utilizzatore",
persone.nominativo_rag_soc "Denominazione",
substr(concat('0000000000',persone.partita_iva),-11,11)  "Partita Iva",
persone.codice_fiscale "Codice Fiscale",
concat(
concat(
concat(concat(TRim(indirizzi.toponimo_via),' '),
concat(TRim(indirizzi.prefisso_via), ' ')),
concat(TRim(indirizzi.denominazione_via),' ')),
       TRim(TO_CHAR(indirizzi.civico))) "Indirizzo punto di prelievo",
 case when gruppi.raggrupp_riepfatt like '%DOMEST%' then 'DOMESTICO' else 
      case when gruppi.raggrupp_riepfatt like '%III%'then 'Illuminazione pubblica' else 'Altri usi' end end "Tipo Agevolazione",
       gruppi.opzione_tar "Tensione",
       contratti.POTENZA_TOLLERATA "POT DISP",
   contratti.data_avvio "Decorrenza Attivazione",
   case when contratti.stato_contratto = 'C' then to_char(contratti.data_chiusura,'dd/mm/yyyy') else '' end "Decorrenza Chiusura",
contratti.stato_contratto "Stato",
case when Bol_con.bol_con_mod like 'M4%' Then 'O' else 
        case when Bol_con.bol_con_mod in ('TM80','RT90','R790','R990') THEN 'E' ELSE  'M' end END "Tipo Misuratore",
 bol_con.bol_con_mat as "Matricola",
contratti_aggregazioni.codice_persona_titolare "Codice Titolare",
       perso.nominativo_rag_soc "Denominazione Titolare",
       substr(concat('0000000000',perso.partita_iva),-11,11) "Partita Iva Titolare",
concat(concat(     
       bollette.mese_bollettazione,'-'),
        bollette.anno_bollettazione) "Bollettazione",
        bollette.codice_tipo_bolletta "Tipo Fattura",
         to_char(fatture.data_emissione_fattura) "Data Emissione",
 case when bf.ac = 'C' then  TO_CHAR(BF.dt_let_in,'DD/MM/YYYY') else '' end "Data Inizio Periodo Lettura",
 case when bf.ac = 'C' then  TO_CHAR(BF.dt_let_Fin,'DD/MM/YYYY') else '' end "Data Fine Periodo Lettura",
     --  BF.dt_let_fin "Data Fine Periodo Lettura",
         
        
 case when Bol_con.bol_con_mod like 'M4%' then '' else BF.letinic1 end "Lettura iniziale F0",
 case when Bol_con.bol_con_mod like 'M4%' then  BF.letinic1 else '' end "Lettura iniziale F1",
 case when Bol_con.bol_con_mod like 'M4%' then  BF.letinic2 else '' end "Lettura iniziale F2",
 case when Bol_con.bol_con_mod like 'M4%' then  BF.letinic3 else '' end "Lettura iniziale F3",
 case when Bol_con.bol_con_mod like 'M4%' then '' else BF.letfinec1 end "Lettura finale F0",
 case when Bol_con.bol_con_mod like 'M4%' then  BF.letfinec1 else '' end "Lettura finale F1",     
 case when Bol_con.bol_con_mod like 'M4%' then  BF.letfinec2 else '' end"Lettura finale F2", 
 case when Bol_con.bol_con_mod like 'M4%' then  BF.letfinec3 else '' end"Lettura finale F3", 
 forn.FATTORE_CORRETTIVO "Costante K",   
 
 

  case when Bol_con.bol_con_mod like 'M4%' then '' else BF.cons1 end "F0",
 case when Bol_con.bol_con_mod like 'M4%' then  BF.cons1 else '' end "F1",     
   case when Bol_con.bol_con_mod like 'M4%' then  BF.cons2 else '' end "F2",
    case when Bol_con.bol_con_mod like 'M4%' then  BF.cons3 else '' end "F3",    
        
       (nvl(cons1,0)+nvl(cons2,0)+nvl(cons3,0)) "Totale (KWh)",
       CRV010.quantita_voce as QTA_FATTURATA,
       
 case when Bol_con.bol_con_mod like 'M4%' then '' else BF.letinir1 end "Lettura Reatt. iniziale F0",
 case when Bol_con.bol_con_mod like 'M4%' then  BF.letinir1 else '' end "LetturaReatt. iniziale F1",
 case when Bol_con.bol_con_mod like 'M4%' then  BF.letinir2 else '' end "Lettura Reatt. iniziale F2",
 case when Bol_con.bol_con_mod like 'M4%' then  BF.letinir3 else '' end "Lettura Reatt. iniziale F3",
 case when Bol_con.bol_con_mod like 'M4%' then '' else BF.letfiner1 end "Lettura Reatt. finale F0",
 case when Bol_con.bol_con_mod like 'M4%' then  BF.letfiner1 else '' end "Lettura Reatt.finale F1",     
 case when Bol_con.bol_con_mod like 'M4%' then  BF.letfiner2 else '' end"Lettura Reatt.finale F2", 
 case when Bol_con.bol_con_mod like 'M4%' then  BF.letfiner3 else '' end"Lettura reatt.finale F3", 
 case when Bol_con.bol_con_mod like 'M4%' then '' else BF.cons_r1 end "Reattiva F0",
 case when Bol_con.bol_con_mod like 'M4%' then  BF.cons_r1 else '' end "Reattiva F1",     
 case when Bol_con.bol_con_mod like 'M4%' then  BF.cons_r2 else '' end "Reattiva F2", 
 case when Bol_con.bol_con_mod like 'M4%' then  BF.cons_r3 else '' end "Reattiva F3",    
 case when Bol_con.bol_con_mod like 'M4%' then '' else BF.pmax_1 end "Potenza Max F0",
 case when Bol_con.bol_con_mod like 'M4%' then  BF.pmax_1 else '' end "Potenza Max F1", 
   
 case when Bol_con.bol_con_mod like 'M4%' then  BF.pmax_2 else '' end"Potenza Max F2", 
 case when Bol_con.bol_con_mod like 'M4%' then  BF.pmax_3 else '' end"Potenza Max F3", 
  
 
        competenze.totale_i "Base Imponibile (Eu)"    ,
            (-competenze.totale_iva
       -competenze.totale_i
       +competenze.importo_competenza)  "Non Imponibile (Eu)",
        competenze.totale_iva "IVA (Eu)",
        competenze.importo_competenza "Totale (Eu)",
        
    (select competenze_riepilogo_voci.IMPONIBILE_IVA from competenze_riepilogo_voci where competenze_riepilogo_voci.codice_gestione = 'ASM'
                                               and competenze_riepilogo_voci.codice_servizio = 'E'
                                                and competenze_riepilogo_voci.codice_voce = '300'
                                                and competenze_riepilogo_voci.codice_origine_competenza = 'B'
                                                and competenze_riepilogo_voci.codice_competenza = BF.codice_bolletta
                                                and competenze_riepilogo_voci.codice_riferimento = BF.COD_CONTR)    "Corrispettivo CTS", 
        
   (select competenze_riepilogo_voci.IMPONIBILE_IVA from competenze_riepilogo_voci where competenze_riepilogo_voci.codice_gestione = 'ASM'
                                               and competenze_riepilogo_voci.codice_servizio = 'E'
                                                and competenze_riepilogo_voci.codice_voce = '500'
                                                and competenze_riepilogo_voci.codice_origine_competenza = 'B'
                                                and competenze_riepilogo_voci.codice_competenza = BF.codice_bolletta
                                                and competenze_riepilogo_voci.codice_riferimento = BF.COD_CONTR)    "Garanzia Voce 500 (Eu)", 
      
                                                
     (select competenze_riepilogo_voci.IMPONIBILE_IVA from competenze_riepilogo_voci where competenze_riepilogo_voci.codice_gestione = 'ASM'
                                               and competenze_riepilogo_voci.codice_servizio = 'E'
                                                and competenze_riepilogo_voci.codice_voce = '510'
                                                and competenze_riepilogo_voci.codice_origine_competenza = 'B'
                                                and competenze_riepilogo_voci.codice_competenza = BF.codice_bolletta
                                                and competenze_riepilogo_voci.codice_riferimento = BF.COD_CONTR)    "Interessi Voce 510 (Eu)",  
                                                
                                                
   (select competenze_riepilogo_voci.IMPONIBILE_IVA from competenze_riepilogo_voci where competenze_riepilogo_voci.codice_gestione = 'ASM'
                                               and competenze_riepilogo_voci.codice_servizio = 'E'
                                                and competenze_riepilogo_voci.codice_voce = 'BEX08'
                                                and competenze_riepilogo_voci.codice_origine_competenza = 'B'
                                                and competenze_riepilogo_voci.codice_competenza = BF.codice_bolletta
                                                and competenze_riepilogo_voci.codice_riferimento = BF.COD_CONTR)    "Importo Bonus anno 2008 (Eu)", 
                                                
    (select competenze_riepilogo_voci.IMPONIBILE_IVA from competenze_riepilogo_voci where competenze_riepilogo_voci.codice_gestione = 'ASM'
                                               and competenze_riepilogo_voci.codice_servizio = 'E'
                                                and competenze_riepilogo_voci.codice_voce in('BEF')
                                                and competenze_riepilogo_voci.codice_origine_competenza = 'B'
                                                and competenze_riepilogo_voci.codice_competenza = BF.codice_bolletta
                                                and competenze_riepilogo_voci.codice_riferimento = BF.COD_CONTR)    "Importo Bonus Fisico (Eu)",                                              
                                                
      (select competenze_riepilogo_voci.IMPONIBILE_IVA from competenze_riepilogo_voci where competenze_riepilogo_voci.codice_gestione = 'ASM'
                                               and competenze_riepilogo_voci.codice_servizio = 'E'
                                                and competenze_riepilogo_voci.codice_voce in('BEX09')
                                                and competenze_riepilogo_voci.codice_origine_competenza = 'B'
                                                and competenze_riepilogo_voci.codice_competenza = BF.codice_bolletta
                                                and competenze_riepilogo_voci.codice_riferimento = BF.COD_CONTR)    "Importo Bonus Economico (Eu)", 
                                                
                                                                                           
        
     
           fatture.progressivo_fattura "Fattura",
            contratti.potenza_impegnata "Potenza Impegnata",
            GRUPPI.LST "LIB_SALV_TUT",
            
                 (select distinct max(cori.NUMERO_CIFRE_INTERE) from bollette_contatori bc,contatori cori where bc.codice_gestione ='ASM' and bc.codice_servizio = 'E' 
                                                and bc.codice_bolletta = bollette.codice_bolletta
                                                and cori.MATRICOLA_CONTATORE = bc.matricola_contatore
                                                and cori.CODICE_SERVIZIO ='E'
                                                and bc.codice_gestione = 'ASM'
                                                and bc.codice_servizio = 'E'
                                                and bc.tipo_misuratore like'C%'
                                                group by bc.codice_bolletta) "N.ro cifre cont. cons.",
      
                                                
            (select distinct max(cori.NUMERO_CIFRE_INTERE) from bollette_contatori bc,contatori cori where bc.codice_gestione ='ASM' and bc.codice_servizio = 'E' 
                                                and bc.codice_bolletta = bollette.codice_bolletta
                                                and cori.MATRICOLA_CONTATORE = bc.matricola_contatore
                                                and cori.CODICE_SERVIZIO ='E'
                                                and bc.codice_gestione = 'ASM'
                                                and bc.codice_servizio = 'E'
                                                and bc.tipo_misuratore like'R%'
                                                group by bc.codice_bolletta) "N.ro cifre cont. Reat.",
                                                
           (select distinct max(cori.NUMERO_CIFRE_INTERE) from bollette_contatori bc,contatori cori where bc.codice_gestione ='ASM' and bc.codice_servizio = 'E' 
                                                and bc.codice_bolletta = bollette.codice_bolletta
                                                and cori.MATRICOLA_CONTATORE = bc.matricola_contatore
                                                and cori.CODICE_SERVIZIO ='E'
                                                and bc.codice_gestione = 'ASM'
                                                and bc.codice_servizio = 'E'
                                                and bc.tipo_misuratore like'M%'
                                                group by bc.codice_bolletta) "N.ro cifre cont. Pot.",
          case when gruppi.DENOM_TAR like '%FOTOVOLTAICO%' then 'SI' end "Fotov.co"
        
      
 
from contratti, 
     gruppi,
      utenze,indirizzi,persone perso,
            (
    select  
     bollette_forniture.CODICE_CONTRATTO as COD_CONTR,
     bollette_forniture.CODICE_BOLLETTA,
     bollette_forniture.CODICE_AC as AC,
     bollette_forniture.data_inizio_c as dt_let_in,
     bollette_forniture.data_fine_c as  dt_let_fin,
     case when bollette_forniture.data_inizio_c is null then '' else  bollette_forniture.LETTURA_INIZIO_C end as letinic1,
     case when bollette_forniture.data_inizio_c is null then '' else  bollette_forniture.LETTURA_fine_C end as letfinec1,   
     case when bollette_forniture.data_inizio_c is null then '' else  bollette_forniture.consumo_c end as cons1,    
        bollette_forniture.CONSUMO_FATTURATO_T as consfa,
     
        bollette_forniture_ls.LETTURA_INIZIO_C2 as letinic2,
        bollette_forniture_ls.LETTURA_FINE_C2 as letfinec2,
        bollette_forniture_ls.consumo_c2 as CONS2,
        bollette_forniture_ls.LETTURA_INIZIO_C3 as letinic3,
        bollette_forniture_ls.LETTURA_FINE_C3 as letfinec3,
        bollette_forniture_ls.consumo_c3 as CONS3,
        bollette_forniture_ls.LETTURA_INIZIO_C4 as letinic4,
        bollette_forniture_ls.LETTURA_FINE_C4 as letfinec4,
        bollette_forniture_ls.consumo_c4 as CONS4,
        bollette_forniture_ls.LETTURA_INIZIO_R1 as letinir1,
        bollette_forniture_ls.LETTURA_FINE_R1 as   letfiner1,
        bollette_forniture_ls.consumo_r1 as CONS_R1,
        bollette_forniture_ls.LETTURA_INIZIO_R2 as letinir2,
        bollette_forniture_ls.LETTURA_FINE_R2 as   letfiner2,
        bollette_forniture_ls.consumo_r2 as CONS_R2,
        bollette_forniture_ls.LETTURA_INIZIO_R3 as letinir3,
        bollette_forniture_ls.LETTURA_FINE_R3 as   letfiner3,
        bollette_forniture_ls.consumo_r3 as CONS_R3,
        bollette_forniture_ls.LETTURA_INIZIO_R4 as letinir4,
        bollette_forniture_ls.LETTURA_FINE_R4 as   letfiner4,
        bollette_forniture_ls.consumo_r4 as CONS_R4,
        bollette_forniture_ls.INDICE_MASSIMA_1 as pmax_1,
        bollette_forniture_ls.INDICE_MASSIMA_2 as pmax_2,
        bollette_forniture_ls.INDICE_MASSIMA_3 as pmax_3,
        bollette_forniture_ls.INDICE_MASSIMA_4 as pmax_4
                                          
                                                
                                                
                                                
                                                
        
    from bollette_forniture,bollette_forniture_ls,bollette,
            (select bollette_forniture.codice_bolletta,
             max(bollette_forniture.codice_contratto) COD_CONTR
             from bollette_forniture.bollette
             where bollette_forniture.codice_gestione = 'ASM'
             and bollette_forniture.codice_servizio = 'E'
              AND BOLLETTE.MESE_BOLLETTAZIONE =02
      AND BOLLETTE.ANNO_BOLLETTAZIONE = 2010
      and BOLLETTE.PROGRESSIVO_BOLLETTAZIONE = 11
             --and bollette_forniture.codice_contratto = 8002648
             group by bollette_forniture.codice_bolletta
         ) BFMAX
       where bollette_forniture.CODICE_BOLLETTA = bfmax.codice_bolletta
       and   bollette_forniture.codice_contratto = bfmax.cod_contr            
       and   bollette_forniture.codice_gestione = 'ASM'
       and bollette_forniture.codice_servizio = 'E'
       and bollette_forniture_ls.codice_gestione(+) = bollette_forniture.codice_gestione
       and bollette_forniture_ls.codice_servizio(+) =bollette_forniture.codice_servizio
       and bollette_forniture_ls.codice_contratto(+) =bollette_forniture.codice_contratto
       and bollette_forniture_ls.codice_bolletta(+)= bollette_forniture.codice_bolletta
       AND BOLLETTE.MESE_BOLLETTAZIONE =02
      AND BOLLETTE.ANNO_BOLLETTAZIONE = 2010
      and BOLLETTE.PROGRESSIVO_BOLLETTAZIONE = 11
       
     
    ) BF,
    
    (select * from competenze_riepilogo_voci where competenze_riepilogo_voci.codice_gestione = 'ASM'
                                                 and competenze_riepilogo_voci.codice_servizio = 'E'
                                                 and competenze_riepilogo_voci.codice_voce = '010'
                                                 and competenze_riepilogo_voci.codice_origine_competenza = 'B') CRV010,
       persone,
       contratti_aggregazioni,
       bollette,
       fatture,
       competenze,FORNITURE forn,
 
        (select B_L_A.codice_bolletta,
               B_L_A.matricola_contatore as bol_con_mat, 
               B_L_A.codice_modello_contatore as bol_con_mod
               from bollette_contatori B_L_A
               where rowid = ( select min(rowid) 
                                      from bollette_contatori B_L_B
                                      where B_L_A.codice_bolletta = B_L_B.codice_bolletta
                                      and B_L_B.codice_gestione = 'ASM'
                                      and B_L_B.codice_servizio = 'E')) bol_con
    
        
where  contratti.codice_gestione = 'ASM'
      and contratti.codice_servizio = 'E'
      and gruppi.codice_tipo_uso = contratti.codice_tipo_uso
      and gruppi.codice_tariffa = contratti.codice_tariffa
      and gruppi.codice_uso = contratti.codice_uso
     
      and utenze.codice_gestione ='ASM'
      and utenze.codice_servizio = 'E'
      and utenze.codice_allacciamento = forn.codice_allacciamento
      and contratti_aggregazioni.codice_gestione = 'ASM'
      and contratti_aggregazioni.codice_utente = contratti.codice_utente
      and persone.codice_persona = contratti_aggregazioni.codice_persona_utilizzatore
      and bollette.codice_gestione = 'ASM'
      and bollette.codice_utente = contratti.codice_utente
      and BF.codice_bolletta = bollette.codice_bolletta
      and BF.COD_CONTR = contratti.codice_contratto
      and fatture.codice_gestione = 'ASM'
      and fatture.codice_fattura = bollette.codice_bolletta
      and competenze.codice_gestione = 'ASM'
      and competenze.codice_competenza = bollette.codice_bolletta
      and forn.codice_gestione = 'ASM'
      and forn.codice_servizio = 'E'
      and forn.codice_contratto = contratti.codice_contratto
      and forn.PROGRESSIVO_UTENZA = utenze.progressivo_utenza
  
   
      and indirizzi.codice_indirizzo=contratti_aggregazioni.codice_indirizzo_utilizzatore
      and perso.codice_persona = contratti_aggregazioni.codice_persona_titolare
      and   gruppi.LST <> 'TUTELA' 
      and bol_con.codice_bolletta(+)=bollette.codice_bolletta
      and CRV010.codice_competenza(+) = BF.codice_bolletta
      and CRV010.codice_riferimento(+) = BF.COD_CONTR
      and bollette.stato_bolletta = 'F'
      AND BOLLETTE.MESE_BOLLETTAZIONE =02
      AND BOLLETTE.ANNO_BOLLETTAZIONE = 2010
      and BOLLETTE.PROGRESSIVO_BOLLETTAZIONE = 11
    
--      AND BOLLETTE.MESE_BOLLETTAZIONE =^Mese bollettazione MM ;N;Numerico^^
--      AND BOLLETTE.ANNO_BOLLETTAZIONE = ^Anno bollettazione AAAA ;N;Numerico^^
       
--      and BOLLETTE.PROGRESSIVO_BOLLETTAZIONE <= 
--      case when ^Progressivo bollettazione PP ( se 0 tutte);N;Numerico^^ = 0 then 9999 
--      else ^Progr. bollet. PP ( se 0 tutte);N;Numerico;3^^ end
--      and BOLLETTE.PROGRESSIVO_BOLLETTAZIONE >= case when ^rogressivo bollettazione PP ( se 0 tutte);N;Numerico;3^^ = 0 then 0 
--      else ^Progressivo bollettazione PP ( se 0 tutte);N;Numerico;3^^  end
--      
--      and CONTRATTI_AGGREGAZIONI.CODICE_PERSONA_TITOLARE <= case when ^Codice Titolare xxxxxxxx ( se 0 tutti);N;Numerico^^ = 0 then 99999999 
--     else ^Codice Titolare xxxxxxxx ( se 0 tutti);N;Numerico;4^^ end
--     and CONTRATTI_AGGREGAZIONI.CODICE_PERSONA_TITOLARE >= case when ^Codice Titolare xxxxxxxx ( se 0 tutti);N;Numerico;4^^ = 0 then 0 
--     else ^Codice Titolare xxxxxxxx ( se 0 tutti);N;Numerico;4^^ end
     


